package com.darwin.darwinUI.manager.base
{
	import com.darwin.darwinUI.manager.ToolTipManager;
	import com.darwin.darwinUI.manager.UIStage;
	
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flash.display.Stage;
	import flash.geom.Point;
	import flash.geom.Rectangle;

	/**
	 * tips显示的缓动类。
	 * start 方法用于做些准备工作，如果有缓动效果，则是tips位置移到正确的地方，缩放置为正确的状态
	 * tween 是将tips显示为最终的状态
	 * 
	 * @author lipi
	 */
	public class TipsShowTween
	{
		public function TipsShowTween()
		{
			_stage = UIStage.uiStage;
		}
		
		private var _stage:Stage;
		
		
		private var _followOffset:int = 5;
		
		/**
		 * 启动TIPS。start 方法用于做些准备工作，如果有缓动效果，则是tips位置移到正确的地方，缩放置为正确的状态
		 */
		public function start(item:*,tooltip:DisplayObject,direction:String,tipsParent:DisplayObjectContainer,offsetX:Number = 0,offsetY:Number = 0):void
		{
			
		}
		
		/**
		 * 是将tips显示为最终的状态
		 */
		public function tween(item:*,tooltip:DisplayObject,direction:String,tipsParent:DisplayObjectContainer,offsetX:Number = 0,offsetY:Number = 0):void
		{
			tipsParent.addChild(tooltip);
			if(direction != ToolTipManager.FOLLOW)
			{
				var $position:Point = TipsUtils.getStagePosition(item,tooltip,direction,UIStage.uiStage);
				tooltip.x = $position.x+offsetX;
				tooltip.y = $position.y+offsetY;
			}else{
				var $rect:Rectangle = tooltip.getBounds(tooltip);
				tooltip.x = _stage.mouseX+_followOffset;
				tooltip.y = _stage.mouseY+_followOffset;
				if(tooltip.x < 0)
				{
					tooltip.x = 0;
				}else if(tooltip.x + $rect.width > _stage.stageWidth)
				{
					tooltip.x = _stage.stageWidth - $rect.width;
				}
				
				if(tooltip.y < 0)
				{
					tooltip.y = 0;
				}else if(tooltip.y + $rect.height > _stage.stageHeight)
				{
					tooltip.y = _stage.stageHeight - $rect.height;
				}
			}
		}
		
		
		/**
		 * 重设tips位置
		 */
		public function reset(item:*,tooltip:DisplayObject,direction:String,tipsParent:DisplayObjectContainer,offsetX:Number = 0,offsetY:Number = 0):void
		{
			if(direction != ToolTipManager.FOLLOW)
			{
				var $position:Point = TipsUtils.getStagePosition(item,tooltip,direction,UIStage.uiStage);
				tooltip.x = $position.x+offsetX;
				tooltip.y = $position.y+offsetY;
			}else{
				var $rect:Rectangle = tooltip.getBounds(tooltip);
				tooltip.x = _stage.mouseX+_followOffset;
				tooltip.y = _stage.mouseY+_followOffset;
				if(tooltip.x < 0)
				{
					tooltip.x = 0;
				}else if(tooltip.x + $rect.width > _stage.stageWidth)
				{
					tooltip.x = _stage.stageWidth - $rect.width;
				}
				
				if(tooltip.y < 0)
				{
					tooltip.y = 0;
				}else if(tooltip.y + $rect.height > _stage.stageHeight)
				{
					tooltip.y = _stage.stageHeight - $rect.height;
				}
			}
		}
		
	}
}